/**
 * 
 */
package com.scpii.universal.service;

import java.util.List;

import com.scpii.universal.dto.TypeDto;
import com.scpii.universal.dto.UserInfoDto;
import com.scpii.universal.hibernate.entity.AppPageTab;
import com.scpii.universal.hibernate.entity.AppViewCatelogRalationTab;
import com.scpii.universal.hibernate.entity.AttributeTab;
import com.scpii.universal.hibernate.entity.CatelogTab;
import com.scpii.universal.hibernate.entity.ModuleStyleTab;

/**
 * genericWeb
 * @author weny
 * 2012-7-8下午09:11:23
 */
public interface AppPageService extends BaseService<AppPageTab, Integer> {
	/**
	 * 根据页面ID获得下属所有子页面
	 * @param id
	 * @param properties
	 * 			要查询的属性
	 * @return
	 * @author liuhj
	 * 2012-7-9下午10:40:30
	 */
	public List<AppPageTab> getAllChildrenPageById(Integer id, String[] properties);
	
	/**
	 * 生成页面树形结构
	 * @param appId
	 * @return
	 * @author liuhj
	 * 2012-7-17下午08:16:27
	 */
	public String generatePagesTree(int appId);
	
	/**
	 * 获取页面的直属下级
	 * @param id
	 * @param properties
	 * @return
	 * @author liuhj
	 * 2012-7-17下午10:10:06
	 */
	public List<AppPageTab> getNextLevelChildren(Integer id, String[] properties);
	
	/**
	 * 获取所有页面模版系列
	 * @return
	 * @author liuhj
	 * 2012-7-17下午05:27:34
	 */
	public List<ModuleStyleTab> getAllModuleStyle();
	
	/**
	 * 根据ID获取风格系列的具体展现样式
	 * @param parentId
	 * @return
	 * @author liuhj
	 * 2012-7-17下午10:18:18
	 */
	public List<ModuleStyleTab> getAllModuleDisplayStyle(int parentId);
	
	/**
	 * 更新用户选择的页面板式
	 * @param pageId
	 * @param styleId
	 * @author liuhj
	 * 2012-7-17下午10:30:28
	 */
	public void updatePageModuleStyle(int pageId,int styleId);
	
	/**
	 * 保存页面
	 * @param jsonData
	 * @param user 
	 * @author liuhj
	 * 2012-7-24下午04:41:05
	 */
	public Integer saveOrUpdatePage(String jsonData, UserInfoDto user);
	
	/**
	 * 删除视图下的分类对应
	 * @param relation
	 * @author liuhj
	 * 2012-7-25下午02:07:09
	 */
	public void deleteViewCateRelation(AppViewCatelogRalationTab relation);
	
	/**
	 * 根据页面ID生成页面内容
	 * @param pageId
	 * @param isFirstPage
	 * 			是否为根页面0，是；1，不是
	 * @param isContentListPage
	 * 			是否为内容列表页面 0，是；1，不是
	 * @param isMorePage
	 * 			0为普通页面，1为更多页面
	 * @return
	 * @author liuhj
	 * 2012-7-26下午02:55:33
	 */
	public String generatePageContentById(int pageId, int isFirstPage, int isContentListPage, int isMorePage);
	
	/**
	 * 获取分类属性，如果不是最后一级，根据分类ID为0查询
	 * 			如果是最后一级，查询本级及所有上级分类属性
	 * @param catelog
	 * @return
	 * @author liuhj
	 * 2012-7-28下午03:26:12
	 */
	public List<AttributeTab> getAttributesByCateId(CatelogTab catelog);
	
	/**
	 * 删除视图
	 * @param viewId
	 * @author liuhj
	 * 2012-8-1下午07:10:12
	 */
	public void deleteView(int viewId);
	
	/**
	 * 删除导航
	 * @param navId
	 * @author liuhj
	 * 2012-8-3上午09:46:20
	 */
	public void deleteNavigation(int navId);
	
	/**
	 * 删除视图内容绑定
	 * @param viewContId
	 * @author liuhj
	 * 2012-8-10下午03:12:51
	 */
	public void deleteContentBinding(int viewContId);
	
	/**
	 * 删除内容视图
	 * @param viewId
	 * @author liuhj
	 * 2012-8-1下午07:10:12
	 */
	public void deleteContentView(int viewId);
	
	/**
	 * 保存更多页面
	 * @param jsonData
	 * @param user 
	 * @author liuhj
	 * 2012-7-24下午04:41:05
	 */
	public void saveOrUpdateMorePage(String jsonData, UserInfoDto user);
	
	/**
	 * 获取更多里动作事件列表
	 * @param appId
	 * @return
	 * @author liuhj
	 * 2012-8-13下午03:56:51
	 */
	public List<TypeDto> getMoreActionList(Integer appId); 
	
	/**
	 * 获取所有自定义页面
	 * @param appId
	 * @return
	 * @author liuhj
	 * 2012-8-13下午03:56:51
	 */
	public List<AppPageTab> getCustomPages(Integer appId);
	
	/**
	 * 获取所有自定义页面
	 * @param appId
	 * @return
	 * @author liuhj
	 * 2012-8-13下午03:56:51
	 */
	public String getCustomPageTree(String jsonData);
	
	/**
	 * 删除页面
	 * @param pageId
	 * @author liuhj
	 * 2012-8-3上午09:46:20
	 */
	public void deletePage(int pageId);
}
